//package cn.cttic.link.sms.ihuyi;
//
//import cn.cttic.link.util.HttpClientUtil;
//import cn.hutool.json.JSONObject;
//import lombok.extern.slf4j.Slf4j;
//import org.dromara.sms4j.api.SmsBlend;
//import org.dromara.sms4j.api.callback.CallBack;
//import org.dromara.sms4j.api.entity.SmsResponse;
//import org.dromara.sms4j.comm.delayedTime.DelayedTime;
//import org.dromara.sms4j.provider.service.AbstractSmsBlend;
//
//import java.util.HashMap;
//import java.util.LinkedHashMap;
//import java.util.List;
//import java.util.Map;
//import java.util.concurrent.Executor;
//
///**
// * 新增厂商的具体短信逻辑实现{@link SmsBlend}
// * 本类的逻辑：总是在日志中输出参数信息，并成功返回调用结果。
// *
// * @author huangchengxing
// */
//
//
//@Slf4j
//public class HuyiSmsImpl extends AbstractSmsBlend<HuyiConfig> {
//
//    protected HuyiSmsImpl(HuyiConfig config, Executor pool, DelayedTime delayed) {
//        super(config, pool, delayed);
//    }
//
//    protected HuyiSmsImpl(HuyiConfig config) {
//        super(config);
//    }
//
//    @Override
//    public String getConfigId() {
//        return "iHuyi";
//    }
//
//    @Override
//    public String getSupplier() {
//        return "iHuyi";
//    }
//
//    /**
//     * <p>说明：发送固定消息模板短信
//     * <p>此方法将使用配置文件中预设的短信模板进行短信发送
//     * <p>该方法指定的模板变量只能存在一个（配置文件中）
//     * <p>如使用的是腾讯的短信，参数字符串中可以同时存在多个参数，使用 & 分隔例如：您的验证码为{1}在{2}分钟内有效，可以传为  message="xxxx"+"&"+"5"
//     * sendMessage
//     *
//     * @param phone 接收短信的手机号
//     *              message 消息内容
//     * @author :Wind
//     */
//    @Override
//    public SmsResponse sendMessage(String phone, String message) {
//        log.info("send message: phone={}, message={}", phone, message);
//
//        String url = getConfig().getRequestUrl();
//        String accessKeyId = getConfig().getAccessKeyId();
//        String accessKeySecret = getConfig().getAccessKeySecret();
//        String content = "尊敬的用户，欢迎您使用交信服务，您的短信验证为" + message + "，5分钟内有效。";
////        String content = "您的验证码是：123456。请不要把验证码泄露给其他人。";
//
//        Map param = new HashMap();
//        param.put("mobile", phone);
//        param.put("content", content);
//        param.put("account", accessKeyId);
//        param.put("password", accessKeySecret);
//
//        try {
//            String result = HttpClientUtil.iHuyiPost(url, param);
//            return getResponse(new JSONObject(result));
//        } catch (Exception ex) {
//            ex.printStackTrace();
//            return getFailedResponse(ex.getMessage());
//        }
//    }
//
//    /**
//     * sendMessage
//     * <p>说明：发送固定消息模板多模板参数短信
//     *
//     * @param phone    接收短信的手机号
//     * @param messages 模板内容
//     * @author :Wind
//     */
//    @Override
//    public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) {
//
//        String url = getConfig().getRequestUrl();
//        String accessKeyId = getConfig().getAccessKeyId();
//        String accessKeySecret = getConfig().getAccessKeySecret();
//        String user = messages.get("user");
//        String installCode = messages.get("installCode");
//        String installUrl = messages.get("installUrl");
//        String content = "尊敬的" + user + "，您的交信北斗智能车载服务码为" + installCode + "，详情点击" + installUrl + "，客服热线（0898）95128-5。";
////        String content = "您的验证码是：123456。请不要把验证码泄露给其他人。";
//
//        Map param = new HashMap();
//        param.put("mobile", phone);
//        param.put("content", content);
//        param.put("account", accessKeyId);
//        param.put("password", accessKeySecret);
//
//        try {
//            String result = HttpClientUtil.iHuyiPost(url, param);
//            return getResponse(new JSONObject(result));
//        } catch (Exception ex) {
//            ex.printStackTrace();
//            return getFailedResponse(ex.getMessage());
//        }
//    }
//
//    /**
//     * <p>说明：使用自定义模板发送短信
//     * sendMessage
//     *
//     * @param templateId 模板id
//     * @param messages   key为模板变量名称 value为模板变量值
//     * @author :Wind
//     */
//    @Override
//    public SmsResponse sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages) {
//
//        String url = getConfig().getRequestUrl();
//        String accessKeyId = getConfig().getAccessKeyId();
//        String accessKeySecret = getConfig().getAccessKeySecret();
//        String user = messages.get("user");
//        String installCode = messages.get("installCode");
//        String installUrl = messages.get("installUrl");
//        String content = "尊敬的" + user + "，您的交信北斗智能车载服务码为" + installCode + "，详情点击" + installUrl + "，客服热线（0898）95128-5。";
////        String content = "您的验证码是：123456。请不要把验证码泄露给其他人。";
//
//        Map param = new HashMap();
//        param.put("mobile", phone);
//        param.put("content", content);
//        param.put("account", accessKeyId);
//        param.put("password", accessKeySecret);
//
//        try {
//            String result = HttpClientUtil.iHuyiPost(url, param);
//            return getResponse(new JSONObject(result));
//        } catch (Exception ex) {
//            ex.printStackTrace();
//            return getFailedResponse(ex.getMessage());
//        }
//    }
//
//    /**
//     * <p>说明：群发固定模板短信
//     * massTexting
//     *
//     * @author :Wind
//     */
//    @Override
//    public SmsResponse massTexting(List<String> phones, String message) {
//        log.info("mass texting: phones={}, message={}", phones, message);
//        return getResponse(new JSONObject()
//            .set("phones", phones)
//            .set("message", message));
//    }
//
//    /**
//     * <p>说明：使用自定义模板群发短信
//     * massTexting
//     *
//     * @author :Wind
//     */
//    @Override
//    public SmsResponse massTexting(List<String> phones, String templateId, LinkedHashMap<String, String> messages) {
//        log.info("mass texting: phones={}, templateId={}, messages={}", phones, templateId, messages);
//        return getResponse(new JSONObject()
//            .set("phones", phones)
//            .set("templateId", templateId)
//            .set("messages", new JSONObject(messages)));
//    }
//
//
//    /*
//     * <p>说明：封装结果的方法（可以没有）
//     * getResponse
//     *
//     * @param resJson      厂商的返回信息
//     * @author :Wind
//     * */
//    private SmsResponse getResponse(JSONObject resJson) {
//        SmsResponse smsResponse = new SmsResponse();
//        smsResponse.setSuccess(true);
//        smsResponse.setData(resJson);
//        smsResponse.setConfigId(getConfigId());
//        return smsResponse;
//    }
//
//    /*
//     * <p>说明：封装结果的方法（可以没有）
//     * getResponse
//     *
//     * @param resJson      厂商的返回信息
//     * @author :Wind
//     * */
//    private SmsResponse getFailedResponse(String errorMsg) {
//        SmsResponse smsResponse = new SmsResponse();
//        smsResponse.setSuccess(false);
//        smsResponse.setData(errorMsg);
//        smsResponse.setConfigId(getConfigId());
//        return smsResponse;
//    }
//}
